package com.hanserwei.han_picture.domain.entity.vo;

import com.hanserwei.han_picture.domain.entity.po.SpaceUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 空间用户 VO
 */
@Data
public class SpaceUserVO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    @Schema(description = "空间用户表id")
    private Long id;
    /**
     * 空间 id
     */
    @Schema(description = "空间 id")
    private Long spaceId;
    /**
     * 用户 id
     */
    @Schema(description = "用户 id")
    private Long userId;
    /**
     * 用户在该空间的角色: viewer/editor/admin
     */
    @Schema(description = "用户在该空间的角色: viewer/editor/admin")
    private String spaceRole;
    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    /**
     * 用户信息
     */
    @Schema(description = "用户信息，UserVO")
    private UserVO userVO;
    /**
     * 空间信息
     */
    @Schema(description = "空间信息，SpaceVO")
    private SpaceVO spaceVO;

    /**
     * 包装类转对象
     *
     * @param spaceUserVO spaceUserVO
     * @return SpaceUser
     */
    public static SpaceUser voToObj(SpaceUserVO spaceUserVO) {
        if (spaceUserVO == null) {
            return null;
        }
        SpaceUser spaceUser = new SpaceUser();
        BeanUtils.copyProperties(spaceUserVO, spaceUser);
        return spaceUser;
    }

    /**
     * 对象转包装类
     *
     * @param spaceUser spaceUser
     * @return spaceUserVO
     */
    public static SpaceUserVO objToVo(SpaceUser spaceUser) {
        if (spaceUser == null) {
            return null;
        }
        SpaceUserVO spaceUserVO = new SpaceUserVO();
        BeanUtils.copyProperties(spaceUser, spaceUserVO);
        return spaceUserVO;
    }
}